package com.qqt.csr.common.idempotent;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * @author:
 * @date: 2024-07-04 14:45
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Idempotent {

    /**
     * 幂等的超时时间，默认为 30 秒
     */
    int timeout() default 30;

    /**
     * 时间单位，默认为 秒
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * redis锁前缀
     * @return
     */
    String keyPrefix() default "qqt_csr:idempotent:";

    /**
     * 模块，会与keyPrefix组合作为redis锁前缀
     * @return
     */
    String model() default "";

    /**
     * lockKey中组合字段的分隔符
     * @return
     */
    String delimiter() default "|";

    /**
     * 触发重复提交拦截时的提示信息
     */
    String message() default "重复请求，请稍后重试";

    /**
     * 提示状态码
     */
    int statusCode() default 100418;
}